from otree.api import (
    models,
    widgets,
    BaseConstants,
    BaseSubsession,
    BaseGroup,
    BasePlayer,
    Currency as c,
    currency_range,
)

author = 'Your name here'

doc = """
Your app description
"""


class Constants(BaseConstants):
    name_in_url = 'end_game'
    players_per_group = 18
    num_rounds = 1
    answer = [[1, 'A'], [2, 'B']]


class Subsession(BaseSubsession):
    pass


class Group(BaseGroup):
    def set_payoffs(self):
        players = self.get_players()
        for p in players:
            p.participant.vars['total_payoff'] += 60  # 每人额外获得60元
            p.final_payoff = p.participant.vars['total_payoff']


class Player(BasePlayer):
    # 基本信息
    sex = models.StringField(label="您的性别", choices=[
        ['男', '男'],
        ['女', '女'],
    ])  # 性别——男女
    is_economics_and_management_major = models.BooleanField(label="是否为经管类专业")  # 是否为经管类专业
    is_join_economics_experience = models.BooleanField(label="是否参加过经济学实验")  # 是否参加过经济学实验
    nation = models.StringField(label="民族")  # 民族
    city_or_countryside = models.StringField(label="您的户口是", choices=[
        ['城市', '城市'],
        ['农村', '农村'],
    ])  # 城市还是农村
    is_party_member = models.BooleanField(label="您是否为党员")
    is_education_loan = models.BooleanField(label="是否有教育贷款（助学金）")
    is_part_time_job = models.BooleanField(label="是否有兼职")
    # 问题
    do_more = models.BooleanField(label="你是否愿意做更多的题，多为团体做贡献")
    is_guilt = models.BooleanField(label="当你做的题比较少时，是否会有愧疚感")
    group_identification_1 = models.BooleanField(label="经过分组测试，你认同你们6个人是一个组的吗")
    group_identification_2 = models.BooleanField(label="经过分组测试和计算题阶段，你认同你们6个人是一个组的吗")
    # 情景问题
    scene_question1 = models.BooleanField(label="你是否还清楚自己是红队还是蓝队还是绿队")  # 你是否还清楚自己是红队还是蓝队还是绿队
    scene_question2 = models.BooleanField(label="你认为做任务的气氛是否具有竞争性")  # 谈判气氛是否具有竞争性
    scene_question3_1 = models.BooleanField(label="在第一个任务组中，是否会等待时间到最后一刻再去提交（或作出选择）")  # 你是否会等待时间到最后一刻再去提交（或作出选择）
    scene_question3_2 = models.BooleanField(label="在第2^t任务组中，是否会等待时间到最后一刻再去提交（或作出选择）")  # 你是否会等待时间到最后一刻再去提交（或作出选择）
    scene_question3_3 = models.BooleanField(label="在短时间任务组中,是否会等待时间到最后一刻再去提交（或作出选择）")  # 你是否会等待时间到最后一刻再去提交（或作出选择）
    scene_question4 = models.BooleanField(label="在短时间对照组中你能否感受到时间压力")  # 在30s时间对照组中你能否感受到时间压力
    time_error = models.StringField(label="在短时间任务组中，你估计自己用的时间与实际用的时间误差是多少", choices=[
        ['1 - 3秒', '1 - 3秒'],
        ['3 - 5秒', '3 - 5秒'],
        ['5秒以上', '5秒以上'],
    ])

    # 五级量表
    # 1-5 越大越认同
    is_hard_work = models.IntegerField(min=1, max=5, label="我认为与我在公司任务中的队友达成决策一致是一项艰苦的工作", choices=[
        [1, '非常不同意'],
        [2, '比较不同意'],
        [3, '一般'],
        [4, '比较同意'],
        [5, '非常同意'],
    ])  # 达成决策一致是一项艰苦的工作
    hard_to_common_point = models.IntegerField(min=1, max=5, label="很难找到共同点", choices=[
        [1, '非常不同意'],
        [2, '比较不同意'],
        [3, '一般'],
        [4, '比较同意'],
        [5, '非常同意'],
    ])  # 很难找到共同点
    willing_to_give_in = models.IntegerField(min=1, max=5, label="我愿意在公司任务中做出让步（自己少要求一些钱）", choices=[
        [1, '非常不同意'],
        [2, '比较不同意'],
        [3, '一般'],
        [4, '比较同意'],
        [5, '非常同意'],
    ])  # 我愿意让步
    easy_accept_proposal = models.IntegerField(min=1, max=5, label="我在公司任务中很容易就赞同了对方的提议", choices=[
        [1, '非常不同意'],
        [2, '比较不同意'],
        [3, '一般'],
        [4, '比较同意'],
        [5, '非常同意'],
    ])  # 我很容易就接受了对方的提议
    result_satisfied = models.IntegerField(min=1, max=5, label="我对公司任务完成结果的很满意", choices=[
        [1, '非常不同意'],
        [2, '比较不同意'],
        [3, '一般'],
        [4, '比较同意'],
        [5, '非常同意'],
    ])  # 对合作结果的满意程度
    difficulty_view_1 = models.IntegerField(min=1, max=5, label="在第一个任务组中，我认为公司任务难度很大", choices=[
        [1, '非常不同意'],
        [2, '比较不同意'],
        [3, '一般'],
        [4, '比较同意'],
        [5, '非常同意'],
    ])  # 对合作难度的看法
    difficulty_view_2 = models.IntegerField(min=1, max=5, label="在第2^t任务组中我认为公司任务难度很大", choices=[
        [1, '非常不同意'],
        [2, '比较不同意'],
        [3, '一般'],
        [4, '比较同意'],
        [5, '非常同意'],
    ])  # 对合作难度的看法
    difficulty_view_3 = models.IntegerField(min=1, max=5, label="在短时间任务组中,我认为公司任务难度很大", choices=[
        [1, '非常不同意'],
        [2, '比较不同意'],
        [3, '一般'],
        [4, '比较同意'],
        [5, '非常同意'],
    ])  # 对合作难度的看法
    rationality_view = models.IntegerField(min=1, max=5, label="我想要尽快结束公司任务", choices=[
        [1, '非常不同意'],
        [2, '比较不同意'],
        [3, '一般'],
        [4, '比较同意'],
        [5, '非常同意'],
    ])  # 对合作合理性的看法
    constants = Constants()
    answer = constants.answer
    B_q1 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q2 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q3 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q4 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q5 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q6 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q7 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q8 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q9 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q10 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q11 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q12 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q13 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q14 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q15 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q16 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q17 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q18 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q19 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q20 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q21 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    B_q22 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)

    C_q1 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q2 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q3 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q4 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q5 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q6 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q7 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q8 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q9 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q10 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q11 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q12 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q13 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q14 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q15 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q16 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q17 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q18 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q19 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q20 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q21 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    C_q22 = models.IntegerField(label='', choices=answer, widget=widgets.RadioSelectHorizontal)
    final_payoff = models.CurrencyField(initial=0)
